<?php
// +----------------------------------------------------------------------
// | Description: 菜单
// +----------------------------------------------------------------------
// | Author: linchuangbin <linchuangbin@honraytech.com>
// +----------------------------------------------------------------------

namespace app\admin\controller;

use app\admin\logic\PlanLogic;
use app\common\validate\PlanValidate;
use app\common\controller\AdminAuthController;
use think\response\Json;

/**
 * Class Plan
 * @package app\admin\controller
 * @property PlanLogic $logic
 * @property PlanValidate $validate
 */
class Plan extends AdminAuthController
{

    /**
     * 初始化
     * @return bool|void
     */
    public function initialize()
    {
        parent::initialize();
        $this->logic = PlanLogic::instance();
        $this->validate = PlanValidate::instance();
        return true;
    }

    /**
     * 数据列表
     * @return Json
     */
    /**
     * 数据列表
     * @return Json
     */
    public function index(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $list = $this->logic->getList($param);
        $count = $this->logic->getCount($param);
        return $this->json_responce(compact(['list', 'count']));
    }

    /**
     * 数据详情
     * @return Json
     */
    public function read(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $data = $this->logic->getByID($param);
        return $this->json_responce($data);
    }

    /**
     * 新增数据
     * @return Json
     */
    public function save(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $data = $this->logic->createData($param);
        return $this->json_responce();
    }

    /**
     * 更新数据
     * @return Json
     */
    public function update(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $data = $this->logic->updateByID($param);
        return $this->json_responce();
    }

    /**
     * 删除单条数据
     * @return Json
     */
    public function delete(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $data = $this->logic->delByID($param);
        return $this->json_responce();
    }

    /**
     * 批量删除数据
     * @return Json
     */
    public function deletes(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $data = $this->logic->delByIDs($param);
        return $this->json_responce();
    }

    /**
     * 启用/禁用数据
     * @return Json
     */
    /**
     * 计划
     * 每个计划不建议半小时,可分为三个状态,预约,开始,结束 两个时间三个状态
     * 计划可以设置循环,设置了循环的计划在结束后会生成一条预约
     * 计划完成时获得一点积分
     * 计划各个状态的时间到了要推送消息
     * 前后台数据展示
     * 计划列表
     *
     * 奖励
     * 积分可以在奖励商店兑换奖励
     * 奖励兑换要有记录
     * 奖励列表
     *
     * 计划奖励
     * 深蹲50个 1
     * 俯卧撑50个 1
     * 跑步15分钟 1
     * 背单词50个 1
     * 11点早睡 1
     * 学习30分钟 1
     *
     * 成就商店
     * 普通正餐(10-) 1
     * 小康正餐(10+=) 2
     * 奢华正餐(20+=) 3
     *
     * 普通修仙(两点睡) 1
     * 小康修仙(两点睡) 2
     * 快乐修仙(两点睡) 3
     * 睡午觉(40分钟) 1
     *
     * 一把乱斗 1
     * 一把匹配 3
     * 小说20分钟 1
     */
    public function enables(): Json
    {
        $param = $this->param;
        $this->validate->runCheck($param, '', __FUNCTION__);
        $data = $this->logic->enableByIDs($param);
        return $this->json_responce();
    }
}
